package com.blb.mapper;

import com.blb.entity.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blb.entity.User;
import org.apache.ibatis.annotations.*;

import javax.validation.constraints.Max;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author QuJiaHao
 * @since 2019-11-16
 */
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 删除 用户-角色表
     * @param roleid
     */
    @Delete("DELETE FROM s_user_role WHERE role_id=#{roleid}")
    void delUserAndRole(Integer roleid);

    /**
     * 删除 用户-角色表
     * @param userid
     */
    @Delete("DELETE FROM s_user_role WHERE user_id=#{userid}")
    void delRoleAndUser(String userid);

    /**
     * 添加 用户-角色表
     * @param userId
     * @param roleId
     */
    @Insert("INSERT INTO s_user_role VALUES(#{userId},#{roleId})")
    void addUserAndRole(String userId,int roleId);

    /**
     * 根据角色名和角色描述获取id
     * @param rolename
     * @param roledescribe
     * @return
     */
    @Select("SELECT id FROM s_role WHERE role_name=#{rolename} AND role_describe=#{roledescribe}")
    Integer getIdByname(String rolename, String roledescribe);

    /**
     * 根据角色名查找角色是否存在
     * @param roleName
     * @return
     */
    @Select("SELECT * FROM s_role WHERE role_name=#{roleName} AND company_id=#{companyId}")
    Role getRoleByname(String roleName, String companyId);

    /**
     * 获取管理员名称
     * @return
     */
    List<User> getUserByRoleId();

    /**
     * 获取公司所属员工名(不包括管理员)
     * @return
     */
    List<User> getUserStaff(String companyId);

    /**
     * 根据用户id判断角色状态
     * @param id
     * @return
     */
    List<Role> getRoleStatusByUserId(String id);

    /**
     * 获取角色用户选中状态
     * @return
     */
    @Select("SELECT user_id FROM s_user_role WHERE role_id=#{roleId}")
    List<String> getOpt(Integer roleId);

    /**
     * 获取角色员工选中状态
     * @return
     */
    List<String> getUserStaffOpt(String companyId,Integer roleId);
}
